=========================================================================== BBS: The Abacus * HST/DS * Potterville MI Date: 05-31-93 (21:37) Number: 6 From: IAN REMMLER Refer#: NONE To: CALVIN FRENCH Recvd: NO Subj: Plasma Generator Conf: (35) Quick Basi --------------------------------------------------------------------------- Well, here goes - It's really pretty simple. - alot simpler than trying to use a bunch o' nested l oops like I did at first (stupid, stupid, STUPID!). Oh well, here it is. DECLARE SUB Adjust (xa, ya, x, y, xb, yb) DECLARE SUB SubDivide (x1, y1, x2, y2) SCREEN 13 RANDOMIZE TIMER GOSUB PalSet PSET (0, 0), (RND * 255) + 1 PSET (319, 0), (RND * 255) + 1 PSET (319, 199), (RND * 255) + 1 PSET (0, 199), (RND * 255) + 1 CONST F = 1.5 'change this to vary roughness CALL SubDivide(0, 0, 319, 199) BEEP DO: LOOP WHILE INKEY$ = "" END PalSet: FOR a = 0 TO 63 s = 0: r = 63: g = a: b = 0: GOSUB Set s = 64: r = 63 - a: g = 63: b = 0: GOSUB Set s = 128: r = 0: g = 63 - a: b = a: GOSUB Set s = 192: r = a: g = 0: b = 63: GOSUB Set NEXT RETURN Set: IF a + s = 0 THEN RETURN 'to keep the background black OUT &H3C8, a + s OUT &H3C9, r OUT &H3C9, g OUT &H3C9, b RETURN SUB Adjust (xa, ya, x, y, xb, yb) IF POINT(x, y) <> 0 THEN EXIT SUB d = ABS(xa - xb) + ABS(ya - yb) v = (POINT(xa, ya) + POINT(xb, yb)) / 2 + (RND - .5) * d * F IF v < 1 THEN v = 1 IF v > 255 THEN v = 255 PSET (x, y), v END SUB SUB SubDivide (x1, y1, x2, y2) IF (x2 - x1 < 1) AND (y2 - y1 < 1) THEN EXIT SUB x = (x1 + x2) / 2 y = (y1 + y2) / 2 CALL Adjust(x1, y1, x, y1, x2, y1) CALL Adjust(x2, y1, x2, y, x2, y2) CALL Adjust(x1, y2, x, y2, x2, y2) CALL Adjust(x1, y1, x1, y, x1, y2) IF POINT(x, y) = 0 THEN v = (POINT(x1, y1) + POINT(x2, y1) +_ POINT(x2, y2) + POINT(x1, y2) + POINT(x1, y) + POINT(x, y1) +_ POINT(x2, y) + POINT(x, y2)) / 8: PSET (x, y), v CALL SubDivide(x1, y1, x, y) CALL SubDivide(x, y1, x2, y) CALL SubDivide(x, y, x2, y2) CALL SubDivide(x1, y, x, y2) END SUB It's dirt slow so don't run it unless you won't need your computer for say, 10 m in. or so. - Ian. --- QuickBBS 2.75 * Origin: Dusty's Palace (210) 625-4479 New Braunfels, TX (1:387/1001) SEEN-BY: 1/211 11/2 4 13/13 101/1 108/89 109/25 110/69 114/5 123/19 124/1 SEEN-BY: 153/752 154/40 77 157/110 159/100 125 430 575 950 203/23 209/209 SEEN-BY: 261/1023 280/1 390/1 396/1 15 397/2 2230/100 2440/5 3603/20